package egovframework.freeboard.util;

/**
 * @author 민종근
 * @since 2012. 08
 * NOTE : 게시판 페이징 처리를 위한 보조 클래스 
 */
public class PageConfig {

	/**보여질 글의 갯수*/
	private int limit = 20;
	
	/**전체 글의 갯수*/
	private int listCount;
	
	/**현제 페이지*/
	private int nowPage = 1;
	
	/**보여질 페이지의 수 */
	private int pageCount = 10;
	
	/**시작 페이지(1, 11, 21 ...)*/
	private int startPage = nowPage - (pageCount/2);
	
	/**끝 페이지(10, 20, 30 ...)*/
	private int endPage = startPage + pageCount - 1;
	
	/**총 페이지 수*/
	private int maxPage;
	
	
	/** 
	 * @param listCount
	 * @return PageConfig
	 * 게시판 전체 글의 갯수를 인자로 받아 기본 페이징 처리
	 */
	public PageConfig(int listCount){
		
		this.listCount = listCount;		
		
		if(listCount%limit>0){
			maxPage = listCount/limit+1;
		}else{
			maxPage = listCount/limit;
		}
		
		if(startPage<1){
			startPage = 1;
		}
		
		if(endPage>maxPage){
			endPage = maxPage;			
		}
	}
	
	/**
	 * @param listCount
	 * @param limit
	 * 게시판의 전체 글 갯수와 보여질 글의 갯수를 인자로 받아 페이징 처리
	 */
	public PageConfig(int listCount, int limit){
		this(listCount);
		this.limit = limit;
	}
	
	/** 
	 * @param listCount
	 * @param limit
	 * @param pageCount
	 * @return PageConfig
	 * 게시판의 전체 글 갯수와 보여질 글의 갯수, 보여질 페이지의 수를 인자로 받아 페이징 처리
	 */
	public PageConfig(int listCount, int limit, int pageCount){		
		this(listCount, limit);
		this.pageCount = pageCount;
	}
	
	public int getLimit() {
		return limit;
	}

	public void setLimit(int limit) {
		this.limit = limit;
	}

	public int getListCount() {
		return listCount;
	}

	public void setListCount(int listCount) {
		this.listCount = listCount;
	}

	public int getNowPage() {
		return nowPage;
	}

	public void setNowPage(int nowPage) {
		this.nowPage = nowPage;
	}

	public int getPageCount() {
		return pageCount;
	}

	public void setPageCount(int pageCount) {
		this.pageCount = pageCount;
	}

	public int getStartPage() {
		return startPage;
	}

	public int getEndPage() {
		return endPage;
	}

	public int getMaxPage() {
		return maxPage;
	}
	
	public void setMaxPage(int maxPage) {
		this.maxPage = maxPage;
	}
	
}
